﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AccesoBD;
using Clases.Estructuras;
using System.Data.Sql;
using System.Data;
using System.Data.SqlClient;
using Clases.Clases;

namespace Clases.ClasesPersistentes
{
    public class DaoAccion
    {
        public void insertarAccion(Accion pAccion)
        {
            try
            {
                List<Parametros> parametros = new List<Parametros>();

                Parametros tmp01 = new Parametros("@nombreAccion", pAccion.nombreAccion);
                Parametros tmp02 = new Parametros("@fecha", pAccion.fecha);
                Parametros tmp03 = new Parametros("@idUsuario", pAccion.usuario.idUsuario);
                string cmdText = "INSERT INTO taccion (nombre_accion, fecha, id_usuario) VALUES (@nombreAccion, @fecha, @idUsuario);";

                parametros.Add(tmp01);
                parametros.Add(tmp02);
                parametros.Add(tmp03);

                AccesoBD.DBAccess acceso = new DBAccess();

                acceso.ejecutarSQL(cmdText, parametros);
            }
            catch (SqlException e)
            {
                throw e;
            }
        }

        public List<StrAccion> listarAcciones(String pnombreUsuario)
        {
            StrAccion tmpAccion = new StrAccion();
            List<StrAccion> listaAcciones = new List<StrAccion>();
            try
            {
                List<Parametros> parametros = new List<Parametros>();
                Parametros tmp01 = new Parametros("@valor01", pnombreUsuario);
                parametros.Add(tmp01);

                String cmdText = "SELECT taccion.id_accion, taccion.nombre_accion, taccion.fecha, tusuario.nombre_Usuario FROM taccion INNER JOIN tusuario ON taccion.id_usuario = tusuario.id_Usuario WHERE tusuario.nombre_usuario = @valor01;";
                AccesoBD.DBAccess acceso = new DBAccess();
                SqlDataReader reader = acceso.ejecutarSelect(cmdText, parametros);

                while (reader.Read())
                {
                    tmpAccion.idAccion = (int)reader.GetValue(0);
                    tmpAccion.nombreAccion = reader.GetValue(1).ToString();
                    tmpAccion.fecha = (DateTime)reader.GetValue(2);
                    String nombreUsuario = reader.GetValue(3).ToString();
                    Usuario usuario = Gestores.GestorUsuario.buscar(nombreUsuario);
                    tmpAccion.usuario = usuario;
                    listaAcciones.Add(tmpAccion);
                }

                reader.Close();
                return listaAcciones;
            }
            catch (SqlException e)
            {
                throw e;
            }
        }
    }
}
